package com.ssy.lingxi.after.sale.service;

import com.ssy.lingxi.after.sale.api.model.vo.request.VerifyVO;
import com.ssy.lingxi.after.sale.model.vo.request.*;
import com.ssy.lingxi.after.sale.model.vo.response.*;
import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;

/**
 * 维修服务接口
 * @author 伍将
 * @date 2020/9/1
 * @version 2.0.0
 */
public interface IRepairGoodsService {

    /**
     * 消费者分页查询维修
     * @author 伍将
     * @date 2020/9/1
     * @param user: 
     * @param pageByConsumeVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageByConsumer(UserLoginCacheDTO user, RepairGoodsPageByConsumerVO pageByConsumeVO);
    /**
     * 消费者分页查询维修
     * @author ds
     * @date 2020/4/22
     * @param user:
     * @param pageByConsumeVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<AfterSaleGoodsIMQueryVO>> pageByIM(UserLoginCacheDTO user, AfterSaleGoodsIMPageVO pageByConsumeVO);

    /**
     * 消费者分页查询等待提交的维修
     * @author 伍将
     * @date 2020/9/1
     * @param user: 
     * @param pageByConsumeVO: 
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageToBeSubmitByConsumer(UserLoginCacheDTO user, RepairGoodsPageByConsumerVO pageByConsumeVO);

    /**
     * 消费者分页查询等待确认完成的维修
     * @author 伍将
     * @date 2020/9/1
     * @param user:
     * @param pageByConsumeVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageToBeConfirmComplete(UserLoginCacheDTO user, RepairGoodsPageByConsumerVO pageByConsumeVO);

    /**
     * 保存维修
     * @author 伍将
     * @date 2020/9/1
     * @param user:
     * @param saveVO:
     * @return com.ssy.lingxi.common.response.Wrapper<java.lang.Long>
     **/
    Wrapper<Long> save(UserLoginCacheDTO user, RepairGoodsSaveVO saveVO);

    /**
     * 删除维修
     * @author 伍将
     * @date 2020/9/1
     * @param user:
     * @param repairId:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> delete(UserLoginCacheDTO user, Long repairId);

    /**
     * 提交维修
     * @author 伍将
     * @date 2020/9/1
     * @param user:
     * @param repairId:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> submit(UserLoginCacheDTO user, Long repairId);

    /**
     * 确认完成维修
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param completeVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> confirmComplete(UserLoginCacheDTO user, RepairGoodsConfirmCompleteVO completeVO);

    /**
     * 供应商分页查询维修
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param pageBySupplierVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageBySupplier(UserLoginCacheDTO user, RepairGoodsPageBySupplierVO pageBySupplierVO);

    /**
     * 供应商分页查询待提交维修
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param pageBySupplierVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageToBeSubmitBySupplier(UserLoginCacheDTO user, RepairGoodsPageBySupplierVO pageBySupplierVO);

    /**
     * 供应商分页查询待审核一级维修
     * @author 伍将
     * @date 2020/9/2
     * @param user: 
     * @param pageBySupplierVO: 
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageToBeVerifyStepOne(UserLoginCacheDTO user, RepairGoodsPageBySupplierVO pageBySupplierVO);

    /**
     * 一级审核
     * @author 伍将
     * @date 2020/10/17
     * @param user:
     * @param verifyVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> verifyStepOne(UserLoginCacheDTO user, VerifyVO verifyVO);

    /**
     * 供应商分页查询待审核二级维修
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param pageBySupplierVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageToBeVerifyStepTwo(UserLoginCacheDTO user, RepairGoodsPageBySupplierVO pageBySupplierVO);

    /**
     * 二级审核
     * @author 伍将
     * @date 2020/10/17
     * @param user:
     * @param verifyVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> verifyStepTwo(UserLoginCacheDTO user, VerifyVO verifyVO);

    /**
     * 供应商分页查询等待确认的维修
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param pageVO:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.common.response.PageData < com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyQueryVO>>
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageToBeConfirm(UserLoginCacheDTO user, RepairGoodsPageBySupplierVO pageVO);

    /**
     * 提交审核
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param verifyVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> submitVerify(UserLoginCacheDTO user, VerifyVO verifyVO);

    /**
     * 确认审核
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param verifyVO:
     * @return com.ssy.lingxi.common.response.Wrapper
     **/
    Wrapper<Void> confirmVerify(UserLoginCacheDTO user, VerifyVO verifyVO);

    /**
     * 消费者获取维修详情
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param repairId:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyDetailVO>
     **/
    Wrapper<RepairGoodsDetailVO> getDetailByConsumer(UserLoginCacheDTO user, Long repairId);

    /**
     * 供应商获取维修详情
     * @author 伍将
     * @date 2020/9/2
     * @param user:
     * @param repairId:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.after.sale.model.vo.repair.response.RepairApplyDetailVO>
     **/
    Wrapper<RepairGoodsDetailVO> getDetailBySupplier(UserLoginCacheDTO user, Long repairId);

    /**
     * 分页查询列表页面搜索条件内容
     * @author 伍将
     * @date 2020/10/17
     * @param user:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.after.sale.model.vo.response.RepairGoodsPageItemsVO>
     **/
    Wrapper<RepairGoodsPageItemsVO> pageItems(UserLoginCacheDTO user);

    /**
     * 平台分页查询维修申请
     * @author 伍将
     * @date 2020/12/7
     * @param user:
     * @param pageVO:
     * @return:
     **/
    Wrapper<PageData<RepairGoodsQueryVO>> pageByPlatform(UserLoginCacheDTO user, RepairGoodsPageByPlatformVO pageVO);

    /**
     * 平台查询维修申请详情
     * @author 伍将
     * @date 2020/12/7
     * @param user:
     * @param repairId:
     * @return:
     **/
    Wrapper<RepairGoodsDetailVO> getDetailByPlatform(UserLoginCacheDTO user, Long repairId);

    /**
     * 分页查询维修列表-采购商-app
     * @param sysUser
     * @param pageVO
     * @return
     */
    Wrapper<PageData<RepairGoodsQueryAppVO>> pageAppByConsumer(UserLoginCacheDTO sysUser, RepairGoodsPageAppByConsumerVO pageVO);
}
